FFmpeg — консольный мультимедийный фреймворк для работы с видео, аудио, субтитрами, потоками, контейнерами и метаданными. В отличие от привычных видеоконвертеров с окном, лентой инструментов и кнопкой Старт, FFmpeg работает через командную строку: пользователь задаёт входной файл, параметры обработки и выходной файл одной командой. Основной инструмент ffmpeg читает файлы, сетевые потоки, устройства захвата, затем фильтрует, перекодирует или копирует потоки в нужный контейнер. Синтаксис строится вокруг входов -i, параметров кодирования, фильтров и выходного URL или имени файла.

FFmpeg используют для конвертации видео в MP4, WebM, MKV и другие контейнеры, сжатия роликов, извлечения аудио, нарезки фрагментов, создания скриншотов из видео, подготовки файлов для публикации на сайте, анализа технических параметров через ffprobe, записи экрана и работы с потоковой передачей. Внутри проекта есть не только программа ffmpeg, но и ffprobe для анализа мультимедийных потоков, ffplay для быстрого воспроизведения, а также библиотеки libavcodec, libavformat, libavfilter, libavdevice, libswscale и libswresample, которые применяются в других приложениях.
Главное отличие FFmpeg от большинства конвертеров — точный контроль. Пользователь не выбирает готовый пресет в окне, а прямо задаёт кодек, битрейт, качество, разрешение, частоту кадров, аудиодорожки, субтитры, фильтры и порядок потоков. За счёт этого FFmpeg подходит не только для единичной конвертации видео, но и для повторяемых задач: пакетной обработки папки с роликами, серверного транскодирования, автоматического создания превью, подготовки видеоархивов и проверки файлов в скриптах.
Программа рассчитана на пользователей, которым важнее управляемость, чем визуальный интерфейс. Новичку приходится привыкать к синтаксису командной строки, зато опытный пользователь получает единый инструмент для операций, которые в графических программах часто разбросаны по разным меню: перекодирование, ремультиплексирование, извлечение дорожек, наложение фильтров, запись, потоковая передача, анализ и проверка результата.
Основные характеристики FFmpeg
| Параметр | Описание |
|---|---|
| Тип программы | консольный мультимедийный фреймворк |
| Основной инструмент | ffmpeg |
| Дополнительные инструменты | ffprobe, ffplay |
| Основные библиотеки | libavcodec, libavformat, libavfilter, libavdevice, libswscale, libswresample |
| Интерфейс | командная строка |
| Основные задачи | кодирование, декодирование, транскодирование, mux, demux, фильтрация, воспроизведение, потоковая передача |
| Платформы | Linux, macOS, Microsoft Windows, BSD, Solaris и другие системы |
| Работа с потоками | автоматический выбор потоков или ручное управление через -map |
| Форматы вывода | зависят от контейнера, кодеков и конкретной сборки |
| Лицензия | LGPL 2.1 or later; при включении GPL-компонентов применяется GPL 2 or later |
FFmpeg не привязан к одному типу файлов. Он работает с контейнерами, кодеками, потоками и фильтрами как с отдельными сущностями. Например, файл movie.mkv может содержать видеопоток H.264, несколько аудиодорожек AAC или AC3, субтитры SRT или ASS, главы и метаданные. FFmpeg позволяет скопировать часть этих потоков без перекодирования, заменить аудиодорожку, добавить субтитры, изменить контейнер, перекодировать только видео или построить новый файл из нескольких входных источников.
Такой подход важен для понимания программы. Расширение файла не равно кодеку: MP4 — контейнер, H.264 — видеокодек, AAC — аудиокодек, SRT — формат субтитров. FFmpeg работает на уровне этих компонентов, поэтому одна команда может менять контейнер без изменения качества, а другая — полностью перекодировать видео и аудио с новыми параметрами.
Интерфейс и логика работы
FFmpeg не имеет штатного графического окна, панели предпросмотра и кнопок вроде Open, Convert или Export. Основная рабочая область — Terminal, PowerShell, Command Prompt или другой командный интерпретатор. Команда строится по схеме:
ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...Эта схема важна не формально, а практически: порядок параметров влияет на результат. Параметр перед -i относится к входу, параметр перед выходным файлом — к выходу. Глобальные параметры ставятся раньше входов и выходов. FFmpeg применяет большинство настроек к следующему указанному файлу, поэтому одна и та же команда с переставленными опциями способна дать другой результат.
Базовая команда выглядит так:
ffmpeg -i input.mov output.mp4Здесь ffmpeg запускает программу, -i input.mov задаёт входной файл, а output.mp4 указывает выходной файл. Если не заданы кодеки, FFmpeg выбирает подходящие параметры по контейнеру и доступным кодекам сборки. Для простого преобразования этого достаточно, но для стабильного результата лучше явно задавать видеокодек, аудиокодек, качество и выбор потоков.

Пример контролируемой конвертации в MP4:
ffmpeg -i input.mov -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 160k output.mp4В этой команде -c:v libx264 задаёт кодирование видеопотока через H.264-кодировщик, -crf 23 управляет качеством для CRF-режима, -preset medium выбирает баланс скорости и эффективности кодирования, -c:a aac задаёт аудиокодек AAC, а -b:a 160k устанавливает аудиобитрейт. FFmpeg-обзор без этих элементов был бы неполным, потому что именно параметры командной строки заменяют в программе графические переключатели.
Главные элементы командной строки
| Элемент | Назначение |
|---|---|
-i | задаёт входной файл, устройство или поток |
-f | принудительно задаёт формат входа или выхода |
-c:v | выбирает видеокодек |
-c:a | выбирает аудиокодек |
-codec или -c | выбирает кодек для потока или копирование через copy |
-map | вручную выбирает потоки для выходного файла |
-vf | применяет видеофильтр |
-af | применяет аудиофильтр |
-filter_complex | задаёт сложный граф фильтров с несколькими входами и выходами |
-ss | задаёт позицию перехода по времени |
-t | задаёт длительность фрагмента |
-to | задаёт конечную временную позицию |
-frames:v | ограничивает количество видеокадров |
-y | перезаписывает выходной файл без вопроса |
-n | запрещает перезапись существующего файла |
-hide_banner | скрывает стартовый баннер, параметры сборки и версии библиотек |
-loglevel | управляет подробностью вывода |
Опция -c особенно важна: она выбирает декодер или кодировщик для конкретного потока, а специальное значение copy копирует поток без повторного кодирования. Например, команда ffmpeg -i input.mkv -map 0 -c copy output.mp4 пытается перенести все потоки из входного файла в выходной контейнер без перекодирования, если контейнер поддерживает эти типы потоков. Для видео это означает отсутствие потери качества на этапе кодирования, но не гарантирует совместимость: контейнер MP4 принимает не все дорожки, которые допустимы в MKV.
Опция -map решает задачу, которую в графических программах обычно выполняет окно выбора дорожек. Без -map FFmpeg сам выбирает поток: для видео — поток с наибольшим разрешением, для аудио — поток с максимальным числом каналов, для субтитров — первый подходящий поток с учётом типа субтитров и контейнера. При использовании -map в выходной файл попадают только выбранные пользователем потоки.
Возможности FFmpeg
Конвертация видео
FFmpeg конвертирует видео между контейнерами и кодеками. Это разные операции, поэтому команды делятся на два типа: смена контейнера без перекодирования и полноценное транскодирование.
Смена контейнера без перекодирования нужна, когда кодеки уже подходят, но требуется другой контейнер:
ffmpeg -i input.mkv -c copy output.mp4Такая команда не пересчитывает изображение и звук. FFmpeg демультиплексирует входной контейнер, переносит совместимые потоки и собирает новый контейнер. Это быстрее перекодирования и не ухудшает качество, но работает только тогда, когда выходной контейнер поддерживает выбранные дорожки.
Полное транскодирование применяется, когда нужно изменить кодек, качество, разрешение, совместимость с устройствами или размер файла:
ffmpeg -i input.mov -c:v libx264 -crf 22 -preset slow -c:a aac -b:a 192k output.mp4Эта команда создаёт MP4 с видео H.264 и аудио AAC. Такой вариант подходит для публикации ролика на сайте, передачи файла пользователю с обычным медиаплеером, подготовки материалов к загрузке в CMS или отправке через облачный диск.
Для WebM чаще используют VP9 или AV1 и Opus:
ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 0 -crf 32 -c:a libopus output.webmWebM удобен для браузерного воспроизведения, но кодирование VP9 и AV1 обычно требует больше времени, чем H.264. При выборе формата нужно учитывать не только размер файла, но и совместимость с устройствами, браузерами и рабочим процессом.
Сжатие видео
Сжатие в FFmpeg выполняется через параметры кодировщика. Самый понятный сценарий — уменьшить размер файла при сохранении приемлемого визуального качества. Для H.264 часто используют CRF-режим:
ffmpeg -i input.mp4 -c:v libx264 -crf 24 -preset medium -c:a aac -b:a 128k output.mp4-crf управляет качеством и размером: меньшие значения дают выше качество и больше файл, большие значения сильнее сжимают. -preset влияет на скорость кодирования и эффективность сжатия: более медленные пресеты дольше кодируют, но позволяют получить меньший файл при сопоставимом качестве. Важно не подменять сжатие одним только снижением битрейта: слишком низкий -b:v может дать заметные блоки, смазывание деталей и проблемы на динамичных сценах.
Для уменьшения размера можно дополнительно снизить разрешение:
ffmpeg -i input.mp4 -vf "scale=1280:-2" -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k output_720p.mp4Фильтр scale=1280:-2 задаёт ширину 1280 пикселей, а высоту рассчитывает автоматически с сохранением пропорций и чётным значением. Чётная высота нужна для совместимости с распространёнными пиксельными форматами и кодеками.
Если ролик должен иметь предсказуемый размер или соответствовать лимиту передачи, применяют битрейт:
ffmpeg -i input.mp4 -c:v libx264 -b:v 2500k -c:a aac -b:a 128k output.mp4Битрейт удобен для потокового вещания, вещательных профилей и технических регламентов. CRF удобнее для архивной и пользовательской конвертации, когда важнее качество, а не точный размер.

Работа с аудио
FFmpeg извлекает аудио из видео, меняет аудиокодек, битрейт, частоту дискретизации и количество каналов. Для извлечения аудиодорожки без перекодирования используется копирование потока:
ffmpeg -i input.mp4 -vn -c:a copy audio.m4a-vn отключает видео в выходном файле, -c:a copy переносит аудиопоток как есть. Такой способ подходит, если аудио уже записано в нужном кодеке и контейнер выходного файла его поддерживает.
Для конвертации в MP3 применяется аудиокодировщик:
ffmpeg -i input.mp4 -vn -c:a libmp3lame -b:a 192k audio.mp3Для AAC:
ffmpeg -i input.wav -c:a aac -b:a 160k output.m4aДля Opus:
ffmpeg -i input.wav -c:a libopus -b:a 96k output.opusFFmpeg также меняет частоту дискретизации и число каналов:
ffmpeg -i input.wav -ar 48000 -ac 2 output.wav-ar 48000 задаёт частоту 48 кГц, -ac 2 делает стерео. Такие команды применяются при подготовке звука для видеомонтажа, трансляции, подкаста, архивирования или объединения с видеодорожкой.
Обрезка, склейка и фрагментация
Обрезка видео в FFmpeg выполняется через -ss, -t и -to. Опция -ss задаёт начальную позицию, -t — длительность, -to — конечную позицию. Если -ss стоит до -i, FFmpeg сначала переходит к позиции во входном файле; если -ss стоит после входа, программа декодирует и отбрасывает данные до нужной временной метки. При копировании потоков точность зависит от ближайших ключевых кадров, а при перекодировании можно получить более точный фрагмент.
Быстро вырезать фрагмент без перекодирования:
ffmpeg -ss 00:01:30 -i input.mp4 -t 00:00:20 -c copy clip.mp4Точно вырезать фрагмент с перекодированием:
ffmpeg -i input.mp4 -ss 00:01:30 -t 00:00:20 -c:v libx264 -crf 20 -c:a aac clip.mp4При склейке файлов важно, чтобы параметры потоков совпадали. Для файлов с одинаковыми кодеками, разрешением, частотой кадров и параметрами аудио применяется concat demuxer. Сначала создаётся текстовый список:
file 'part1.mp4'file 'part2.mp4'file 'part3.mp4'Затем выполняется команда:
ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4Если параметры фрагментов различаются, безопаснее перекодировать общий результат. Иначе выходной файл может воспроизводиться с ошибками, рассинхронизацией или сбоями на стыках.
Работа с субтитрами
FFmpeg умеет копировать, извлекать, подключать и прожигать субтитры. Выбор зависит от задачи: сохранить субтитры отдельной дорожкой или превратить их в часть видеокадра.
Скопировать все потоки из MKV в новый MKV:
ffmpeg -i input.mkv -map 0 -c copy output.mkvИзвлечь первую дорожку субтитров:
ffmpeg -i input.mkv -map 0:s:0 subtitles.srtДобавить внешний SRT-файл как отдельную дорожку:
ffmpeg -i input.mp4 -i subtitles.srt -c copy -c:s mov_text output.mp4Прожечь субтитры в картинку:
ffmpeg -i input.mp4 -vf "subtitles=subtitles.srt" -c:a copy output.mp4Прожиг нужен, когда устройство или площадка не поддерживает отдельные субтитры. Минус такого способа — текст становится частью изображения, его нельзя отключить или отредактировать без повторной обработки видео.
Фильтры видео и аудио
Фильтры — одна из сильных сторон FFmpeg. Простые фильтры задаются через -vf для видео и -af для аудио. Сложные графы, где участвуют несколько входов, применяют через -filter_complex. Параметр -filter создаёт граф фильтров для потока, а для нескольких входов и выходов используется -filter_complex.
Изменить размер:

ffmpeg -i input.mp4 -vf "scale=1920:-2" -c:v libx264 -crf 22 -c:a copy output.mp4Обрезать края кадра:
ffmpeg -i input.mp4 -vf "crop=1280:720:0:0" -c:a copy output.mp4Повернуть видео:
ffmpeg -i input.mp4 -vf "transpose=1" -c:a copy output.mp4Изменить частоту кадров:
ffmpeg -i input.mp4 -r 30 -c:v libx264 -crf 22 -c:a aac output_30fps.mp4Увеличить громкость:
ffmpeg -i input.mp4 -af "volume=1.5" -c:v copy output.mp4Нормализовать громкость через loudnorm:
ffmpeg -i input.mp4 -af "loudnorm" -c:v copy output.mp4Для наложения изображения используется overlay:
ffmpeg -i video.mp4 -i logo.png -filter_complex "[0:v][1:v]overlay=20:20[out]" -map "[out]" -map 0:a? -c:a copy output.mp4Здесь [0:v] — видеопоток из первого входа, [1:v] — изображение из второго входа, overlay=20:20 размещает картинку с отступом 20 пикселей от левого верхнего угла, а -map 0:a? добавляет аудио из первого файла, если аудиодорожка есть. Для сложных фильтров используется тот же принцип связок входов и выходов через метки.
Скриншоты и превью из видео
FFmpeg создаёт одиночный кадр, серию кадров или набор превью по временным интервалам. Для одного кадра используется -ss и -frames:v 1:
ffmpeg -ss 00:00:10 -i input.mp4 -frames:v 1 preview.jpgЕсли нужно получить кадр в PNG:
ffmpeg -ss 00:00:10 -i input.mp4 -frames:v 1 preview.pngСерия кадров раз в секунду:
ffmpeg -i input.mp4 -r 1 frames/frame_%03d.jpgШаблон %03d создаёт нумерацию с тремя цифрами: frame_001.jpg, frame_002.jpg, frame_003.jpg. FFmpeg также умеет собирать видео из последовательности изображений, используя похожий шаблон имён.

Ссылка:
Скриншоты полезны для проверки содержимого файла, создания обложки, подготовки миниатюр для сайта, контроля качества после перекодирования. При пакетной обработке можно автоматически создать превью для сотен роликов без открытия видеоредактора.
Поддерживаемые форматы и кодеки
FFmpeg работает с большим числом контейнеров, кодеков, протоколов, изображений, субтитров и устройств. Поддержка конкретного формата зависит от сборки: часть возможностей реализована внутри FFmpeg, часть подключается через внешние библиотеки, которые включаются при сборке через параметры ./configure. Например, поддержка некоторых внешних кодировщиков и декодировщиков включается отдельными флагами, такими как --enable-libaom, --enable-libvpx, --enable-libx264, --enable-libx265, --enable-libmp3lame, --enable-libdav1d.
Контейнеры
FFmpeg применяют с MP4, MOV, MKV, AVI, WebM, MPEG-TS, FLV, OGG, WAV, MP3, M4A и другими контейнерами. Контейнер задаёт упаковку потоков, но не всегда определяет кодеки. Например, MP4 часто содержит H.264 или H.265 с AAC, WebM — VP8, VP9, AV1 с Opus или Vorbis, MKV — широкий набор видео, аудио и субтитров.
Видеокодеки
В рабочих сценариях чаще встречаются H.264, H.265/HEVC, AV1, VP9, MPEG-2, MPEG-4 Part 2, ProRes, DNxHD/DNxHR, FFV1. Выбор зависит от задачи:
| Кодек | Где используется |
|---|---|
| H.264 | универсальная совместимость, веб, мобильные устройства, архивы обычного качества |
| H.265/HEVC | более эффективное сжатие, 4K, современные устройства |
| AV1 | современное сжатие для веба и потоковых сценариев |
| VP9 | WebM, браузерное видео |
| ProRes | монтажные промежуточные файлы |
| DNxHD/DNxHR | монтажные промежуточные файлы |
| FFV1 | архивирование без потерь |
FFmpeg не делает один кодек лучшим для всех задач. Для отправки файла пользователю обычно удобнее H.264 в MP4. Для экономии места в архиве могут подойти H.265 или AV1. Для монтажа лучше использовать монтажные кодеки, которые легче декодируются и меньше нагружают рабочую станцию. Для долговременного технического архива применяют кодеки без потерь, но такие файлы занимают значительно больше места.
Аудиокодеки
В аудио часто используются AAC, MP3, Opus, Vorbis, FLAC, PCM, ALAC, AC3 и другие форматы. AAC подходит для MP4 и универсального воспроизведения, MP3 — для широкой совместимости, Opus — для речи и веб-сценариев, FLAC — для хранения без потерь, PCM — для монтажа и промежуточной обработки.
Пример конвертации WAV в FLAC:
ffmpeg -i input.wav -c:a flac output.flacПример конвертации WAV в Opus:
ffmpeg -i input.wav -c:a libopus -b:a 96k output.opusСубтитры и метаданные
FFmpeg работает с текстовыми и встроенными субтитрами, дорожками в контейнерах, главами и метаданными. При ручном выборе потоков через -map можно сохранить нужные аудиодорожки, субтитры и главы. При автоматическом выборе потоков часть данных может не попасть в выходной файл, поэтому для файлов с несколькими дорожками безопаснее явно задавать -map 0.
ffprobe: анализ медиафайлов
ffprobe — отдельный инструмент из набора FFmpeg для анализа мультимедийных потоков. Он показывает информацию о контейнере, видеодорожках, аудиодорожках, субтитрах, длительности, разрешении, частоте кадров, кодеках, битрейте, метаданных и других параметрах. Информация выводится в человекочитаемом виде или в форматах, удобных для обработки скриптами: JSON, XML, CSV, compact, flat, ini.
Быстрая проверка файла:
ffprobe input.mp4Вывод в JSON:
ffprobe -v error -show_streams -show_format -of json input.mp4Показать только видеопотоки:
ffprobe -v error -select_streams v -show_streams input.mp4Показать длительность контейнера:
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 input.mp4ffprobe особенно полезен перед пакетной обработкой. Перед перекодированием коллекции файлов можно проверить, где уже используется нужный кодек, какие ролики имеют нестандартное разрешение, какие файлы содержат несколько аудиодорожек, где отсутствует звук, какие записи имеют переменную частоту кадров. Это снижает риск массовой обработки с неправильными параметрами.
В работе с сайтом ffprobe помогает автоматически получать технические данные для карточки видео: длительность, ширину, высоту, кодек, размер, наличие аудио. В медиасервере через ffprobe можно решить, нужно ли транскодировать файл или достаточно отдать его напрямую.
ffplay: быстрый просмотр файлов и потоков
ffplay — простой портативный медиаплеер на базе библиотек FFmpeg и SDL. Он используется для быстрого просмотра файла, проверки потока, тестирования фильтров и отладки мультимедийных сценариев.
Открыть файл:
ffplay input.mp4Проверить сетевой поток:
ffplay http://example.com/stream.m3u8Посмотреть результат фильтра без сохранения файла:
ffplay -vf "scale=1280:-2" input.mp4ffplay не заменяет полноценный медиаплеер вроде VLC media player, но удобен в технической работе: команда открывает результат сразу из терминала, не требует создания временного файла и помогает быстро понять, корректно ли применяется фильтр.
Установка и проверка работоспособности
FFmpeg работает после появления исполняемых файлов ffmpeg, ffprobe и ffplay в системе. В Windows обычно используют папку с файлами и добавляют каталог bin в переменную Path, чтобы команды запускались из любой директории. В macOS и Linux FFmpeg часто доступен через терминал после установки соответствующего пакета или распаковки сборки. Процесс проверки везде одинаковый:
ffmpeg -versionКоманда выводит сведения о сборке, параметрах конфигурации и версиях библиотек. Если терминал отвечает, что ffmpeg не является распознанной командой, исполняемый файл не находится в системном пути. В Windows это исправляется через Environment Variables и переменную Path; после изменения пути нужно открыть новое окно Command Prompt или PowerShell.
Для проверки ffprobe:
ffprobe -versionДля проверки ffplay:
ffplay -versionЕсли в сборке отсутствует ffplay, это не мешает конвертации и анализу файлов: основная обработка выполняется через ffmpeg, анализ — через ffprobe.
Что важно проверить после установки
команда
ffmpeg -versionзапускается из любой папки;команда
ffprobe -versionдоступна в том же терминале;путь к файлам с пробелами берётся в кавычки;
команда на тестовом файле создаёт выходной файл в ожидаемой папке;
в выводе ошибок нет сообщений о неподдерживаемом кодировщике;
при работе со скриптами используется полный путь или корректно настроенный
Path.
Пример с путями в кавычках:
ffmpeg -i "D:\Video Projects\input file.mov" -c:v libx264 -c:a aac "D:\Video Projects\output file.mp4"Кавычки обязательны, если в пути есть пробелы. Без них командная строка разделит путь на несколько аргументов, и FFmpeg не найдёт файл.
Практические инструкции
Как конвертировать видео в MP4
Для обычной конвертации в MP4 с H.264 и AAC подходит команда:
ffmpeg -i input.mov -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 160k output.mp4Разбор параметров:
-i input.movзадаёт исходный файл;-c:v libx264кодирует видео в H.264;-crf 23задаёт уровень качества;
-preset mediumвыбирает баланс скорости и сжатия;-c:a aacкодирует звук в AAC;-b:a 160kзадаёт аудиобитрейт;output.mp4задаёт итоговый файл.
Для ролика без звука команда может быть короче:
ffmpeg -i input.mov -c:v libx264 -crf 23 -preset medium -an output.mp4-an отключает аудио. Это удобно для фоновых видео на сайте, превью, технических роликов и анимаций без звуковой дорожки.
Как уменьшить размер видео
Сначала нужно решить, что можно менять: качество, разрешение, кодек, аудиобитрейт или частоту кадров. Универсальный вариант — H.264 с CRF:
ffmpeg -i input.mp4 -c:v libx264 -crf 26 -preset medium -c:a aac -b:a 128k output_small.mp4Если файл всё ещё слишком большой, можно снизить разрешение:
ffmpeg -i input.mp4 -vf "scale=1280:-2" -c:v libx264 -crf 24 -preset medium -c:a aac -b:a 128k output_720p.mp4Для вертикального видео лучше задавать высоту:
ffmpeg -i input.mp4 -vf "scale=-2:1280" -c:v libx264 -crf 24 -preset medium -c:a aac -b:a 128k output_vertical.mp4Параметр -2 сохраняет пропорции и подбирает чётное значение. Это снижает риск проблем с кодированием и воспроизведением.
Как извлечь аудио из видео
Если аудиодорожку нужно сохранить без изменения:
ffmpeg -i input.mp4 -vn -c:a copy audio.m4aЕсли нужен MP3:
ffmpeg -i input.mp4 -vn -c:a libmp3lame -b:a 192k audio.mp3Если нужен WAV для монтажа:
ffmpeg -i input.mp4 -vn -c:a pcm_s16le audio.wavWAV занимает больше места, но удобен для дальнейшей обработки в аудиоредакторах. Для редактирования звука можно использовать отдельные программы, например Audacity, а FFmpeg оставить для извлечения, конвертации и пакетной подготовки файлов.
Как обрезать видео без перекодирования
Быстрый вариант:
ffmpeg -ss 00:02:00 -i input.mp4 -t 00:00:30 -c copy cut.mp4Команда берёт фрагмент с 2-й минуты длительностью 30 секунд. Поскольку используется -c copy, видео и аудио не перекодируются. Такой способ подходит для быстрой нарезки длинных записей, но граница начала может попасть на ближайший ключевой кадр.
Точный вариант:
ffmpeg -i input.mp4 -ss 00:02:00 -t 00:00:30 -c:v libx264 -crf 20 -c:a aac cut_exact.mp4При перекодировании FFmpeg точнее отрабатывает временную позицию, но операция занимает больше времени и заново кодирует изображение.
Как сделать скриншот из видео
Один кадр на 10-й секунде:
ffmpeg -ss 00:00:10 -i input.mp4 -frames:v 1 cover.jpgКадр в PNG:
ffmpeg -ss 00:00:10 -i input.mp4 -frames:v 1 cover.pngНесколько кадров по одному в секунду:
ffmpeg -i input.mp4 -r 1 frames/frame_%03d.jpgДля сайта часто делают один кадр-обложку и несколько миниатюр. FFmpeg позволяет автоматизировать это в одном сценарии: сначала через ffprobe получить длительность, затем через ffmpeg извлечь кадры в нужных точках.
Как проверить кодек, битрейт и дорожки
Команда для полного анализа:
ffprobe -v error -show_format -show_streams input.mp4JSON-вывод для скрипта:
ffprobe -v error -show_format -show_streams -of json input.mp4Вывод только видеопотока:
ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,width,height,avg_frame_rate,bit_rate -of default=noprint_wrappers=1 input.mp4Вывод только аудиопотоков:
ffprobe -v error -select_streams a -show_entries stream=index,codec_name,channels,sample_rate,bit_rate -of table input.mp4Такой анализ помогает понять, нужно ли перекодирование. Если файл уже в H.264/AAC и подходит по разрешению, можно ограничиться сменой контейнера или копированием потоков. Если кодек не подходит устройству или сайту, нужно транскодирование.
Как записать экран
FFmpeg умеет захватывать видео и аудио с устройств. Для Linux с X11 используется x11grab:
ffmpeg -f x11grab -video_size 1920x1080 -framerate 30 -i :0.0 output.mkvДля захвата X11-дисплея используются -f x11grab, -video_size, -framerate и вход :0.0; смещение области задаётся через формат :0.0+10,20.
Для Windows в типичных сборках используется DirectShow-устройство:
ffmpeg -f dshow -i video="screen-capture-recorder" output.mkvДля macOS применяется AVFoundation:
ffmpeg -f avfoundation -i "1:none" output.movНазвания устройств нужно смотреть в конкретной системе. Для профессиональной записи экрана с настройкой сцен, микрофона, источников и потоковой передачи удобнее OBS Studio, а FFmpeg сильнее в автоматизации, фоновой записи и технической обработке результата.
Плюсы и минусы FFmpeg
Плюсы:
программа даёт точный контроль над кодеками, контейнерами, фильтрами и потоками;
ffmpeg,ffprobeиffplayзакрывают обработку, анализ и быстрый просмотр мультимедиа;командная строка хорошо подходит для пакетной обработки и автоматизации;
-mapпозволяет вручную выбрать видеодорожки, аудиодорожки, субтитры и дополнительные потоки;-c copyвыполняет ремультиплексирование без повторного кодирования, когда контейнер совместим с потоками;ffprobeвыводит данные в JSON, XML, CSV и другие форматы, удобные для скриптов;фильтры позволяют менять размер, кадрировать, поворачивать, нормализовать звук, накладывать изображение и строить сложные цепочки обработки;
программа работает на Windows, Linux, macOS, BSD, Solaris и других системах;
открытая лицензия позволяет использовать FFmpeg в разных сценариях при соблюдении условий LGPL/GPL.
Минусы:
нет штатного графического интерфейса;
новичку сложно сразу понять порядок параметров и различие между входными, выходными и глобальными опциями;
команды с несколькими дорожками требуют аккуратного использования
-map;неудачный выбор контейнера, кодека или пиксельного формата приводит к ошибкам совместимости;
-c copyне применим к задачам, где нужен фильтр, изменение размера, прожиг субтитров или смена кодека;поддержка конкретных кодировщиков зависит от сборки;
при пакетной обработке ошибка в команде повторяется на всех файлах;
для коммерческого продукта нужно отдельно контролировать лицензию сборки и внешних библиотек.
FFmpeg не стоит оценивать как неудобный видеоконвертер. Это инструмент другого типа. В графической программе пользователь видит список пресетов и запускает обработку кнопкой. В FFmpeg он сам задаёт параметры. За счёт этого программа сложнее при первом знакомстве, но точнее в регулярной работе.

Системные требования
У FFmpeg нет единого набора требований в стиле минимальный процессор, 4 ГБ RAM и столько-то места на диске, потому что программа существует в разных сборках и выполняет задачи разной тяжести. Для запуска нужен совместимый исполняемый файл, операционная система, терминал и доступ к входным/выходным файлам. Проект компилируется и работает на Linux, Mac OS X, Microsoft Windows, BSD, Solaris и других системах, а также в разных архитектурах и конфигурациях сборки.
Практические требования по сценариям
| Сценарий | Что влияет на скорость и стабильность |
|---|---|
Смена контейнера через -c copy | скорость диска, размер файла, совместимость потоков |
| Конвертация 1080p в H.264 | процессор, выбранный preset, фильтры, скорость чтения/записи |
| Конвертация 4K в H.265 или AV1 | процессор, аппаратное ускорение, память, охлаждение, длительность ролика |
| Пакетная обработка сотен файлов | диск, CPU, правильный скрипт, логирование ошибок |
Фильтры scale, crop, overlay | CPU/GPU, разрешение, количество фильтров |
| Запись экрана | устройство захвата, частота кадров, диск, кодек, аудиоустройство |
Анализ через ffprobe | скорость чтения файла, доступность контейнера и потоков |
Для простого анализа через ffprobe и ремультиплексирования без перекодирования требования низкие: программа в основном читает и записывает данные. Для кодирования 4K, особенно в H.265 или AV1, нагрузка резко выше. При сложных фильтрах FFmpeg не просто пересобирает файл, а декодирует кадры, применяет операции к каждому кадру и заново кодирует результат.
Диск и место под временные файлы
FFmpeg обычно пишет результат сразу в указанный выходной файл. Для перекодирования не всегда нужны крупные временные файлы, но свободное место всё равно критично: выходной файл может занимать гигабайты, а при ошибке диска операция завершится неудачно. При работе с промежуточными кодеками ProRes, DNxHD/DNxHR, FFV1 или WAV размер результата заметно выше, чем у пользовательского MP4.
CPU и GPU
Процессор важен для программного кодирования и фильтрации. Чем выше разрешение, сложнее кодек и медленнее пресет, тем дольше идёт обработка. Аппаратное ускорение может использовать GPU или специализированные блоки кодирования, но конкретные возможности зависят от сборки FFmpeg, драйверов, видеокарты и выбранного кодека. Внешние библиотеки и аппаратные технологии подключаются на этапе сборки, включая AMD AMF/VCE и Intel QuickSync Video.
Оперативная память
Для обычной конвертации одного файла FFmpeg не требует большого объёма памяти, но сложные фильтры, высокое разрешение, несколько входов, параллельные процессы и обработка больших кадров увеличивают расход RAM. При пакетной обработке безопаснее запускать ограниченное число процессов одновременно, а не кодировать десятки файлов параллельно.
Сравнение с аналогами
FFmpeg нельзя честно сравнивать только с обычными видеоконвертерами. Он одновременно является программой командной строки, набором библиотек, средством анализа файлов и базой для других инструментов. Поэтому сравнение уместнее строить по сценариям: ручная конвертация, пакетная обработка, автоматизация, монтаж, потоковое вещание, работа с контейнерами.
| Программа | Интерфейс | Сильная сторона | Где сильнее FFmpeg | Где удобнее аналог |
|---|---|---|---|---|
| HandBrake | графический интерфейс и очередь | ручное транскодирование видео | сложные команды, скрипты, работа с потоками и фильтрами | быстрый выбор пресета без изучения синтаксиса |
| Avidemux | графический интерфейс | простая нарезка и базовое кодирование | пакетные сценарии, ffprobe, сложные фильтры | ручные правки в окне |
| VLC media player | графический плеер | воспроизведение и базовая конвертация | точное управление кодеками, потоками и параметрами | просмотр файлов и быстрая пользовательская конвертация |
| Shotcut | видеоредактор с монтажной шкалой | монтаж, визуальная работа с клипами | автоматическая обработка, серверные сценарии, анализ | монтаж с дорожками, клипами и предпросмотром |
| Format Factory | графический конвертер | простая массовая конвертация | гибкость параметров и контроль потоков | пользовательская конвертация без командной строки |
| Any Video Converter | графический конвертер | понятные пресеты | нестандартные контейнеры, автоматизация, скрипты | разовые задачи для новичка |
| XMedia Recode | графический интерфейс | детальные настройки кодирования в окне | работа из терминала и интеграция в скрипты | настройка кодирования без команд |
| MediaCoder | графический интерфейс | продвинутые настройки транскодирования | прозрачная командная автоматизация | визуальная очередь заданий |
FFmpeg и HandBrake
HandBrake удобен, когда пользователь хочет открыть файл, выбрать пресет и получить готовый MP4 или MKV без изучения командной строки. FFmpeg лучше подходит, когда нужна серия однотипных операций, точный выбор потоков, автоматическая обработка по расписанию, создание превью, анализ через ffprobe, потоковая передача или обработка файлов на сервере.
Для домашнего пользователя, которому нужно один раз сжать ролик, HandBrake проще. Для администратора, который обрабатывает сотни файлов в папке, FFmpeg практичнее: одну команду можно вставить в скрипт и повторять без ручных кликов.
FFmpeg и Avidemux
Avidemux рассчитан на визуальную работу: открыть ролик, выбрать фрагмент, выполнить простую обработку. FFmpeg делает те же базовые операции командами, но выигрывает при повторяемости. Если нужно каждый день нарезать записи по времени, извлекать аудио, создавать скриншоты и складывать результат в папки, команда или скрипт с FFmpeg быстрее ручной работы.
Avidemux удобнее для пользователя, который хочет видеть видео перед обрезкой. FFmpeg удобнее, когда временные метки уже известны или поступают из таблицы, базы данных, логов, монтажного листа.
FFmpeg и VLC media player
VLC — прежде всего медиаплеер. Он открывает множество форматов и содержит базовые функции конвертации, но его основная задача — воспроизведение. FFmpeg — инструмент обработки. Он не заменяет удобный плеер, зато позволяет задать такие параметры, которые в графическом окне VLC либо скрыты, либо недоступны.
При просмотре фильма или проверке ролика удобнее VLC. При подготовке набора файлов для сайта, извлечении дорожек, изменении кодеков и создании скриншотов удобнее FFmpeg.
FFmpeg и Shotcut
Shotcut — видеоредактор. Он нужен для монтажа, работы с клипами, таймлайном, переходами, текстом и визуальным предпросмотром. FFmpeg не предназначен для комфортного творческого монтажа. Его зона — точные технические операции: конвертация, фильтры, автоматизация, потоковая передача, анализ параметров.
Если нужно собрать ролик из фрагментов вручную, выбрать удачные кадры и отрегулировать монтаж, лучше видеоредактор. Если нужно автоматически привести сотни файлов к одному формату, лучше FFmpeg.
Отзывы пользователей и профильных журналов
Мнение профильных изданий
Технические издания обычно описывают FFmpeg как один из ключевых инструментов для работы с мультимедиа через командную строку. How-To Geek называет FFmpeg полезной бесплатной программой командной строки для аудио и видео, подчёркивая открытый характер инструмента и широкий охват задач. XDA Developers описывает FFmpeg как бесплатный open-source инструмент командной строки для конвертации и обработки аудио- и видеофайлов.
Tom’s Hardware освещал развитие оптимизаций FFmpeg и отдельно подчёркивал, что громкие ускорения относятся к конкретным функциям или фильтрам, а не ко всей программе целиком. Такой контекст важен: FFmpeg активно оптимизируется, но скорость зависит от кодека, фильтра, процессора, сборки и конкретной команды.
Linux-издания вроде Phoronix регулярно рассматривают крупные релизы FFmpeg как значимые события для открытой мультимедийной инфраструктуры. Это отражает реальное положение программы: FFmpeg часто находится не на виду у обычного пользователя, но работает внутри медиасистем, приложений, конвертеров и серверных цепочек обработки.
Усреднённое мнение пользователей
Пользовательские отзывы обычно сходятся в одном: FFmpeg ценят за мощность, гибкость и поддержку множества задач, но порог входа выше, чем у графических конвертеров. На G2 сводка отзывов отмечает, что пользователи хвалят гибкость и контроль над обработкой аудио и видео, а среди сложностей выделяют крутую кривую обучения для новичков.
На Capterra FFmpeg представлен как программа для аудиообработки и мультимедийных задач, а пользовательская оценка там строится на небольшом числе отзывов. Такие агрегаторы полезны не как техническая документация, а как индикатор восприятия: пользователи ценят результат, но часто нуждаются в примерах команд, оболочках или готовых сценариях.
Что это значит для выбора программы
FFmpeg хорошо подходит тем, кто готов работать через терминал, сохранять команды, читать вывод ошибок и проверять результат через ffprobe. Пользователь, которому нужен визуальный интерфейс и кнопки, быстрее начнёт с HandBrake, XMedia Recode или Format Factory. Но при росте количества файлов и требований к автоматизации FFmpeg становится заметно сильнее: одна команда превращается в повторяемый процесс.
Безопасность, лицензия и юридические ограничения
FFmpeg распространяется под LGPL 2.1 or later. Если в сборку включены GPL-компоненты, условия GPL 2 or later применяются ко всему FFmpeg. Проприетарной коммерческой лицензии, которую можно купить вместо соблюдения LGPL/GPL, у проекта FFmpeg нет.
Для обычного пользователя это означает, что программу можно применять бесплатно при соблюдении лицензии. Для разработчика, который встраивает FFmpeg в продукт, ситуация сложнее: нужно учитывать способ линковки, состав сборки, внешние библиотеки, параметры --enable-gpl, --enable-nonfree, распространение бинарников и исходных кодов, требования к уведомлениям и лицензиям.
Почему сборка имеет значение
Одна сборка FFmpeg может содержать только компоненты, совместимые с LGPL, другая — включать GPL-библиотеки, третья — использовать компоненты с дополнительными ограничениями. Подключение внешних библиотек требует явного включения через ./configure, а некоторые библиотеки меняют лицензионный режим сборки.
Для личной обработки видео это редко становится проблемой. Для компании, которая распространяет приложение вместе с FFmpeg, это критичный блок. Ошибка в лицензировании способна затронуть не только юридическую сторону, но и возможность публикации продукта, обновлений и исходных компонентов.
Безопасность файлов
FFmpeg обрабатывает недоверенные медиафайлы, а мультимедийные форматы сложны. Проект уделяет внимание безопасности и выпускает исправления для стабильных веток при обнаружении проблем.
Практические правила безопасной работы:
не запускать непроверенные команды из интернета без понимания параметров;
не использовать
-yв массовых скриптах без резервной копии;проверять выходной файл перед удалением исходника;
не обрабатывать подозрительные файлы с повышенными правами;
хранить исходники до завершения проверки результата;
в рабочих системах логировать команды и вывод ошибок.
Типичные ошибки при работе с FFmpeg
Неправильный порядок параметров
FFmpeg применяет многие параметры к следующему входному или выходному файлу. Если параметр поставить не туда, программа выполнит другую операцию. Например, -ss до -i и после -i дают разное поведение при переходе по времени.
Неправильно для ожидаемой точности:
ffmpeg -ss 00:01:00 -i input.mp4 -c copy output.mp4Эта команда быстрая, но при -c copy старт может быть привязан к ключевому кадру. Для точной обрезки используется перекодирование:
ffmpeg -i input.mp4 -ss 00:01:00 -t 00:00:30 -c:v libx264 -c:a aac output.mp4Потеря аудиодорожек и субтитров
Без -map FFmpeg автоматически выбирает потоки. В файле с несколькими аудиодорожками программа может взять не ту дорожку, а данные и attachment-потоки автоматически не выбираются.
Для сохранения всех потоков лучше использовать:
ffmpeg -i input.mkv -map 0 -c copy output.mkvДля сохранения видео, всех аудиодорожек и всех субтитров:
ffmpeg -i input.mkv -map 0:v -map 0:a -map 0:s -c copy output.mkvИспользование -c copy вместе с фильтрами
-c copy копирует поток без декодирования и перекодирования. Фильтр требует декодировать поток, изменить кадры или звук и снова закодировать. Поэтому команда с -vf и -c:v copy логически несовместима.
Неправильно:
ffmpeg -i input.mp4 -vf "scale=1280:-2" -c:v copy output.mp4Правильно:
ffmpeg -i input.mp4 -vf "scale=1280:-2" -c:v libx264 -crf 23 -c:a copy output.mp4Перезапись файлов
Параметр -y перезаписывает выходной файл без вопроса, -n запрещает перезапись. В одиночной команде -y удобен, но в скрипте он опасен: ошибка в имени файла может уничтожить уже готовый результат. В массовой обработке безопаснее использовать -n, отдельную папку вывода и лог ошибок.
Пробелы в путях
Пути с пробелами нужно брать в кавычки:
ffmpeg -i "C:\Users\User\Videos\input file.mp4" "C:\Users\User\Videos\output file.mp4"Без кавычек FFmpeg получит несколько отдельных аргументов и завершит команду ошибкой чтения входа или записи выхода.
Неподдерживаемый кодировщик
Команда может не выполниться, если сборка не содержит нужный кодировщик. Например, libx264, libx265, libvpx, libopus, libmp3lame зависят от сборки и подключённых библиотек. Перед массовой обработкой стоит проверить доступные кодировщики:
ffmpeg -encodersПроверить конкретный кодировщик:
ffmpeg -h encoder=libx264Неправильный контейнер
Не каждый контейнер поддерживает любой кодек и любой тип субтитров. MKV гибче MP4, но MP4 чаще нужен для совместимости с устройствами и вебом. Если FFmpeg сообщает, что поток не может быть записан в выбранный контейнер, нужно сменить контейнер, перекодировать поток или исключить неподдерживаемую дорожку через -map.
Для кого FFmpeg подходит
| Сценарий | Оценка |
|---|---|
| Разовая конвертация одного файла | можно использовать, но графический аналог быстрее освоить |
| Регулярная обработка видео | FFmpeg подходит хорошо |
| Пакетная конвертация папок | один из сильных сценариев |
| Серверное транскодирование | подходит при правильной настройке команд и логов |
| Проверка параметров файлов | ffprobe удобен и точен |
| Создание превью и кадров | FFmpeg хорошо автоматизирует процесс |
| Монтаж с визуальной шкалой | нужен видеоредактор, например Shotcut |
| Запись экрана с визуальными сценами | удобнее OBS Studio |
| Технический архив | подходит при грамотном выборе кодека и контейнера |
| Работа без загрузки файлов в облако | подходит, потому что обработка выполняется локально |
Новичкам
Новичку стоит начинать не со сложных графов фильтров, а с четырёх операций: конвертация в MP4, извлечение аудио, обрезка фрагмента, анализ через ffprobe. После этого проще понять, как устроены потоки, почему нужен -map, чем контейнер отличается от кодека и почему -c copy не меняет качество.
Минимальный набор команд для старта:
ffmpeg -i input.mov output.mp4ffmpeg -i input.mp4 -vn audio.mp3ffmpeg -ss 00:01:00 -i input.mp4 -t 00:00:30 -c copy clip.mp4ffprobe -show_streams input.mp4Опытным пользователям
Опытному пользователю FFmpeg даёт полный контроль: можно создавать разные выходы из одного входа, выбирать дорожки по языку, делать несколько версий ролика, анализировать параметры через JSON, встраивать команды в Python, Bash, PowerShell или серверную очередь.
Пример создания двух версий видео из одного входа:
ffmpeg -i input.mp4 \-map 0:v -map 0:a -c:v libx264 -crf 22 -c:a aac output_high.mp4 \-map 0:v -map 0:a -vf "scale=1280:-2" -c:v libx264 -crf 25 -c:a aac output_720p.mp4Для бизнеса и серверной обработки
В рабочих системах FFmpeg ценен предсказуемостью и автоматизацией. Команды можно хранить в конфигурации, логировать, запускать по очереди, применять к файлам после загрузки и проверять через ffprobe. Для сайта это означает автоматическое создание MP4/WebM-версий, обложек, технических метаданных и контроль ошибок.

В таком сценарии важно:
не удалять исходник до успешной проверки результата;
сохранять лог команды и stderr;
использовать
ffprobeдо и после обработки;явно задавать
-map, кодеки и контейнеры;проверять код возврата процесса;
разделять временные и финальные файлы;
тестировать команды на коротких образцах перед запуском на архиве.
Практические сценарии использования
Подготовка видео для сайта
Для сайта обычно нужен файл в MP4 с H.264 и AAC, разумным разрешением и контролируемым размером. Команда:
ffmpeg -i input.mov -vf "scale=1920:-2" -c:v libx264 -crf 23 -preset medium -pix_fmt yuv420p -c:a aac -b:a 128k output.mp4-pix_fmt yuv420p повышает совместимость с плеерами и браузерами, потому что не все устройства корректно воспроизводят видео с другими пиксельными форматами. После обработки файл проверяется:
ffprobe -v error -show_streams -show_format output.mp4Создание видеообложки
Кадр на 5-й секунде:
ffmpeg -ss 00:00:05 -i input.mp4 -frames:v 1 cover.jpgЕсли в начале ролика заставка или чёрный экран, лучше выбрать позицию ближе к содержательному фрагменту:
ffmpeg -ss 00:00:20 -i input.mp4 -frames:v 1 cover.jpgПодготовка аудио для публикации
Извлечь и нормализовать звук:
ffmpeg -i input.mp4 -vn -af "loudnorm" -c:a libmp3lame -b:a 192k podcast.mp3Для рабочего WAV:
ffmpeg -i input.mp4 -vn -af "loudnorm" -c:a pcm_s16le podcast.wavУдаление звука из видео
ffmpeg -i input.mp4 -c:v copy -an silent.mp4-an отключает аудио. Видео копируется без перекодирования, если контейнер подходит.
Замена аудиодорожки
ffmpeg -i video.mp4 -i new_audio.wav -map 0:v:0 -map 1:a:0 -c:v copy -c:a aac -shortest output.mp4-map 0:v:0 берёт видео из первого файла, -map 1:a:0 берёт аудио из второго файла, -shortest завершает файл по самому короткому потоку. Это полезно для замены озвучки, синхронизации ролика с новой дорожкой или подготовки обучающих материалов.
Создание GIF из видео
ffmpeg -ss 00:00:03 -i input.mp4 -t 00:00:04 -vf "fps=12,scale=640:-1:flags=lanczos" output.gifGIF плохо подходит для длинных и детализированных роликов: файл быстро становится большим. Для сайта чаще лучше использовать MP4 или WebM, а GIF оставлять для коротких фрагментов.
Создание WebP-анимации
ffmpeg -i input.mp4 -vf "fps=15,scale=640:-2" -c:v libwebp -lossless 0 -quality 75 output.webpWebP-анимация может быть компактнее GIF и подходит для коротких превью, если целевая среда поддерживает формат.
Создание видео из изображений
ffmpeg -framerate 25 -i frame_%03d.png -c:v libx264 -pix_fmt yuv420p output.mp4Если файлы называются frame_001.png, frame_002.png, frame_003.png, шаблон %03d подставляет номера по порядку. Для набора изображений с wildcard используется -pattern_type glob.
Работа с несколькими дорожками
Медиафайлы часто содержат несколько аудиодорожек: оригинальный звук, дубляж, комментарии, дорожку для слабослышащих. Без -map FFmpeg выберет дорожку автоматически. Для контроля нужно задавать потоки явно.
Сохранить всё:
ffmpeg -i input.mkv -map 0 -c copy output.mkvОставить только первое видео и первую аудиодорожку:
ffmpeg -i input.mkv -map 0:v:0 -map 0:a:0 -c copy output.mkvОставить все аудиодорожки и только первое видео:
ffmpeg -i input.mkv -map 0:v:0 -map 0:a -c copy output.mkvВыбрать английскую аудиодорожку по метаданным языка:
ffmpeg -i input.mkv -map 0:v:0 -map 0:m:language:eng -c copy output.mkvFFmpeg поддерживает выбор дорожки по языку через -map 0:m:language:eng, а также выбор всех потоков, конкретного потока и исключение дорожки отрицательным mapping.
Производительность и качество
Скорость FFmpeg определяется не одной настройкой. На неё влияют кодек, разрешение, фильтры, аппаратное ускорение, диск, процессор, количество потоков и выбранный пресет.
Что ускоряет обработку
копирование потоков через
-c copy;отсутствие фильтров;
быстрый пресет кодировщика;
аппаратное кодирование при корректной сборке и драйверах;
обработка файлов на быстром SSD;
ограничение параллельных задач до разумного числа;
предварительная проверка файлов через
ffprobe.
Что замедляет обработку
AV1 и другие ресурсоёмкие кодеки;
4K и 8K-материалы;
шумоподавление, деинтерлейсинг, масштабирование и сложные фильтры;
очень медленные пресеты;
запись результата на медленный диск;
одновременный запуск большого числа процессов;
перекодирование там, где достаточно
-c copy.
Как выбирать качество
Для H.264 через libx264 в пользовательских задачах удобно начинать с CRF. Для черновиков можно использовать более высокие значения, для финального экспорта — ниже. Для стриминга и технических требований применяют битрейт, потому что там важно уложиться в канал или профиль.
Таблица выбора подхода:
| Задача | Подход |
|---|---|
| сохранить качество и быстро сменить контейнер | -c copy |
| уменьшить размер без точного лимита | CRF |
| уложиться в заданный канал | -b:v, -maxrate, -bufsize |
| подготовить монтажный файл | монтажный кодек, например ProRes или DNxHR |
| архивировать без потерь | FFV1, FLAC, PCM, подходящий контейнер |
| сделать файл для сайта | MP4 H.264/AAC или WebM при нужной поддержке |
Частые вопросы
Есть ли у FFmpeg графический интерфейс?
У FFmpeg нет штатного графического интерфейса. Основная работа выполняется через командную строку. Отдельные программы используют FFmpeg внутри или дают графическую оболочку над его возможностями, но сам FFmpeg остаётся консольным инструментом.
Можно ли использовать FFmpeg бесплатно?
FFmpeg можно использовать бесплатно при соблюдении лицензии. Базовая лицензия — LGPL 2.1 or later; при включении GPL-компонентов применяется GPL 2 or later.
Почему одна команда работает на одном компьютере и не работает на другом?
Разные сборки FFmpeg содержат разные внешние библиотеки и кодировщики. Если команда использует libx264, libx265, libvpx, libopus, libmp3lame или аппаратный кодировщик, нужный компонент должен быть включён в сборку. Проверить доступные кодировщики можно командой ffmpeg -encoders.
Чем FFmpeg отличается от HandBrake?
HandBrake — графический транскодер с пресетами. FFmpeg — консольный фреймворк с более гибким управлением потоками, фильтрами, контейнерами и автоматизацией. Для разовой ручной конвертации проще HandBrake; для скриптов, серверной обработки и нестандартных задач сильнее FFmpeg.
Можно ли конвертировать видео без потери качества?
Да, если потоки копируются без перекодирования через -c copy и выходной контейнер совместим с этими потоками. Если применяется фильтр, изменение кодека, изменение разрешения или повторное сжатие с потерями, качество меняется.
Почему после конвертации пропала аудиодорожка?
Причина часто в автоматическом выборе потоков или неподдерживаемом контейнере. Для файлов с несколькими дорожками лучше использовать -map 0 или явно выбирать нужные аудиодорожки через -map.
Как узнать, какие кодеки поддерживает установленная сборка?
Список кодеков:
ffmpeg -codecsСписок кодировщиков:
ffmpeg -encodersСписок декодировщиков:
ffmpeg -decodersПроверка конкретного кодировщика:
ffmpeg -h encoder=libx264Почему файл после обработки стал больше?
Размер может увеличиться из-за более высокого битрейта, другого кодека, менее эффективного пресета, несжатого аудио, монтажного формата, сохранения дополнительных дорожек или изменения контейнера. Для контроля размера нужно задавать CRF, битрейт, разрешение, аудиобитрейт и проверять результат через ffprobe.
Итоговые рекомендации
FFmpeg стоит выбирать, когда нужна не просто конвертация видео, а контроль над процессом: какие дорожки попадут в файл, какой кодек будет использован, как изменится разрешение, какие фильтры применятся, что покажет ffprobe после обработки и как повторить команду для сотен файлов. Это программа для тех, кто готов работать через терминал ради точности, автоматизации и воспроизводимости результата.
Для разовой конвертации одного ролика удобнее начать с графического инструмента: HandBrake, XMedia Recode, Format Factory или Any Video Converter. Для монтажа с таймлайном лучше выбрать Shotcut или другой видеоредактор. Для просмотра файлов логичнее использовать VLC media player.
FFmpeg раскрывается в регулярной работе: пакетная конвертация, подготовка видео для сайта, серверное транскодирование, автоматическое создание превью, извлечение аудио, проверка параметров, ремультиплексирование без потерь, работа с несколькими дорожками и скрипты. Главное правило — не запускать сложную команду сразу на единственной копии файла. Сначала проверяется короткий фрагмент, затем анализируется результат через ffprobe, после этого команда применяется ко всей партии.
Список изменений
Ранние годы: формирование основы:
- FFmpeg развивался как мультимедийный проект, объединяющий консольные инструменты и библиотеки. С самого начала важной частью архитектуры стало разделение задач: libavcodec отвечает за кодеки, libavformat — за контейнеры, libavfilter — за фильтры, ffmpeg — за командную обработку, ffprobe — за анализ, ffplay — за воспроизведение. Такая структура позволила использовать FFmpeg не только как программу в терминале, но и как набор библиотек для других приложений.
- Ранние ветки закрепили базовую модель работы: входные файлы через -i , выбор контейнера, кодирование, декодирование, копирование потоков и консольный вывод прогресса. Именно в этой модели до сих пор построены базовые команды FFmpeg.
Переход к зрелому мультимедийному фреймворку:
- По мере развития FFmpeg получил поддержку большого числа форматов, кодеков, устройств и протоколов. Важным направлением стало подключение внешних библиотек: libx264 для H.264, libx265 для HEVC, libvpx для VP8/VP9, libaom для AV1, libmp3lame для MP3, dav1d для AV1-декодирования и другие компоненты. Эти библиотеки не всегда включаются автоматически: сборка должна быть настроена соответствующими флагами.
- Так FFmpeg превратился из набора утилит для энтузиастов в основу множества рабочих процессов: видеоконвертеров, медиаплееров, серверов транскодирования, систем загрузки видео, инструментов записи и приложений для анализа файлов.
Линейка 4.x: крупный шаг в сторону современных кодеков и фильтров:
- Ветка 4.x стала важным этапом для современных сценариев обработки. В это время активно развивались новые фильтры, аппаратные возможности, поддержка современных видеокодеков и работа с контейнерами. Для пользователей это означало более широкий набор команд без перехода на отдельные инструменты: один и тот же FFmpeg мог кодировать, фильтровать, извлекать дорожки, создавать последовательности изображений и работать с потоками.
Линейка 5.x: обновление API и развитие кодеков:
- FFmpeg 5.0 Lorentz вышел как крупный релиз с изменениями API и новыми возможностями. Профильные Linux-издания рассматривали выпуск FFmpeg 5.0 как значимое обновление популярного открытого мультимедийного набора, а материалы разработчиков VideoLAN выделяли существенные изменения API и статус крупного релиза.
- Для конечного пользователя это выражалось не столько в новом интерфейсе, сколько в расширении поддерживаемых форматов, фильтров и библиотек. FFmpeg сохранял прежний принцип работы: команды в терминале, параметры на входе и выходе, контроль дорожек через -map .
Линейка 6.x: ежегодный ритм крупных выпусков и новые правила совместимости:
- FFmpeg 6.0 Von Neumann добавил новые кодировщики, декодеры, фильтры и улучшения CLI, а также изменил подход к релизам: крупные релизы стали bump-ить ABI, а устаревшие API удаляются после нескольких крупных версий.
- В ветке 6.1 появились дополнительные декодеры, фильтры, поддержка Vulkan decode hwaccel для H.264, HEVC и AV1, расширения VAAPI, новые возможности enhanced RTMP/FLV для HEVC, VP9 и AV1, а также изменения в ffprobe , включая alias -output_format для -of .
- Для пользователей командной строки важна не только поддержка новых форматов, но и предсказуемость: старые команды могут требовать корректировки, если в новых ветках удаляются устаревшие опции или меняется поведение отдельных компонентов.
Линейка 7.x: многопоточная архитектура CLI и новые мультимедийные возможности:
- В развитии FFmpeg 7.x заметную роль сыграл рефакторинг командного инструмента ffmpeg : компоненты транскодирующего конвейера — демультиплексоры, декодеры, фильтры, кодировщики и мультиплексоры — начали работать параллельно. Это улучшает пропускную способность и использование CPU, хотя заметный прирост не проявляется в задачах, где почти всё время уходит в один компонент, например в само видеокодирование.
- В этот период также появились native VVC decoder и поддержка IAMF в libavformat , а CLI получил возможность настраивать IAMF-структуру через -stream_group .
- Для пользователя это отражается в двух направлениях: расширяется набор современных медиаформатов, а внутренняя архитектура становится лучше приспособлена к сложным конвейерам обработки.
Линейка 8.x: дальнейшее развитие кодировщиков, аппаратного ускорения и инфраструктуры:
- Ветка 8.x продолжила развитие аппаратного ускорения, современных кодеков и фильтров. Профильные Linux-издания выделяли среди изменений FFmpeg 8.1 поддержку D3D12 H.264 и AV1 encoding, метаданные LCEVC и экспериментальный xHE-AAC Mps212 MPEG-H decoder через libmpeghdec .
- История FFmpeg показывает устойчивый вектор: программа не превращается в графический редактор, а углубляет консольную модель. Развитие идёт через поддержку новых форматов, оптимизацию библиотек, расширение фильтров, улучшение аппаратного ускорения, поддержку новых протоколов и повышение качества API для приложений.


Оставте свой отзыв о FFmpeg